package Darstellung;

import javax.swing.JFrame;
import javax.swing.JTextArea;

import Darstellung.Objekte.JObjekt;
import Spiel.Objekte.IObjekt;
import Spiel.Objekte.Ort;

public class GUI {

	private static JFrame fenster;
	private static JObjekt player;
	private static Spielfenster spielfenster;

	public static void init() {
		System.out.print("Darstellung wird erstellt..." + "\n");
		fenster = new JFrame();
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.setLayout(null);
		fenster.setSize(800, 600);
		fenster.setLocation(550, 0);
		// fenster.setBackground(new Color(0, 0, 255));
		fenster.setVisible(true);
		initSpielfenster();

		initTUTORIAL();
		fenster.repaint();
		System.out.print("Darstellung ist fertig!" + "\n");
	}

	private static void initTUTORIAL() {
		JTextArea ta = new JTextArea();
		fenster.add(ta);
		ta.setLocation(420, 30);
		ta.setSize(360, 360);
		ta.setText("Keys:\n"
				+ "W=hoch , S=runter , A=links , D=rechts , SPACE=nehmen\n"
				+ "Du kannst den Player bewegen\nDu kannt die anderen Objekte nehmen\n\n"
				+ "Benutzer-Interface:\n"
				+ "Der 1st Knopf ist die Geschwindigkeit (Testzwecke)\n"
				+ "Der 2te Knopf oeffnet die Tasche\n\n" + "Tasche:\n"
				+ "Die Objekte die du nimmst landen hier\n"
				+ "Test Knoepfe sind zum Hinzufuegen und Leeren\n");
		ta.setEditable(false);
		ta.setFocusable(false);
	}

	private static void initSpielfenster() {
		if (fenster == null) {
			System.out.print("NPE" + "\n");
			return;
		}
		spielfenster = new Spielfenster();
		fenster.add(spielfenster);
	}

	public static void zeichneOrt(Ort ort) {
		if (spielfenster == null) {
			System.out.print("NPE" + "\n");
			return;
		}
		if (ort == null) {
			System.out.print("NPE" + "\n");
			return;
		}
		spielfenster.removeAllObjekte();
		for (IObjekt objekt : ort.getObjekte()) {
			JObjekt jobjekt = new JObjekt(objekt);
			spielfenster.addObjekt(jobjekt);
		}
		JObjekt jobjekt = spielfenster.getObjekt(0);
		player = jobjekt;
	}

	public static void zeichne() {
		if (fenster == null) {
			System.out.print("NPE" + "\n");
			return;
		}
		fenster.repaint();
	}

	public static JFrame getFenster() {
		return fenster;
	}

	public static JObjekt getPlayer() {
		return player;
	}

	public static Spielfenster getSpielfenster() {
		return spielfenster;
	}
}
